import type {PrizeDTO} from "@/types/dto/PrizeDTO";
import request from "@/utils/request";
import type {Result} from "@/types/common/Result";
import type {PrizeQuery} from "@/types/query/PrizeQuery";
import type {PageResult} from "@/types/common/PageResult";
import type {PrizeVO} from "@/types/vo/PrizeVO";
import type {UserPrizeDTO} from "@/types/dto/UserPrizeDTO";
import type {UserPrizeQuery} from "@/types/query/UserPrizeQuery";
import type {UserPrizeVO} from "@/types/vo/UserPrizeVO";

/**
 * 新增奖品
 * @param {object} params 奖品表
 * @param {number} params.id 主键
 * @param {string} params.prizeImage 奖品图片
 * @param {string} params.prizeName 奖品名称
 * @param {number} params.prizePoints 奖品所需积分
 * @param {number} params.prizeStock 奖品库存
 * @returns
 */
export function savePrizeService(params:PrizeDTO) {
  return request.post<Result<any>>(`/prize/save`, params);
}
/**
 * 查询奖品列表
 * @param {object} params 奖品表
 * @param {boolean} params.isAsc 是否升序
 * @param {number} params.pageNum 页码
 * @param {number} params.pageSize 每页记录数
 * @param {string} params.prizeName 奖品名称
 * @param {string} params.sortBy 排序字段
 * @returns
 */
export function getPrizePageService(params:PrizeQuery) {
  return request.post<Result<PageResult<PrizeVO>>>(`/prize/page`, params);
}

/**
 * 删除奖品
 * @param {string} ids ids
 * @returns
 */
export function deletePrizeService(ids:string) {
  return request.delete<Result<any>>(`/prize/delete/${ids}`);
}

/**
 * 修改奖品
 * @param {object} params 奖品表
 * @param {number} params.id 主键
 * @param {string} params.prizeImage 奖品图片
 * @param {string} params.prizeName 奖品名称
 * @param {number} params.prizePoints 奖品所需积分
 * @param {number} params.prizeStock 奖品库存
 * @returns
 */
export function updatePrizeService(params:PrizeDTO) {
  return request.put<Result<any>>(`/prize/update`, params);
}

/**
 * 兑换商品
 * @param {object} params 用户奖品表
 * @param {string} params.address 收货地址
 * @param {number} params.id 主键
 * @param {string} params.phone 收货人电话
 * @param {number} params.prizeId 奖品id
 * @param {number} params.userId 用户id
 * @returns
 */
export function exchangePrizeService(params:UserPrizeDTO) {
  return request.post<Result<any>>(`/user-prize/exchange`, params);
}

/**
 * 查询用户奖品
 * @param {object} params 用户奖品表
 * @param {boolean} params.isAsc 是否升序
 * @param {number} params.pageNum 页码
 * @param {number} params.pageSize 每页记录数
 * @param {number} params.prizeName 奖品名称
 * @param {string} params.sortBy 排序字段
 * @returns
 */
export function getUserPrizePageService(params:UserPrizeQuery) {
  return request.post<Result<PageResult<UserPrizeVO>>>(`/user-prize/page`, params);
}

/**
 * 修改地址信息
 * @param {object} params 用户奖品表
 * @param {string} params.address 收货地址
 * @param {number} params.id 主键
 * @param {string} params.phone 收货人电话
 * @param {number} params.prizeId 奖品id
 * @param {number} params.userId 用户id
 * @returns
 */
export function updateUserPrizeService(params:UserPrizeDTO) {
  return request.post<Result<any>>(`/user-prize/update`, params);
}

/**
 * 退单
 * @param {string} id id
 * @returns
 */
export function refundService(id:number) {
  return request.post<Result<any>>(`/user-prize/refund/${id}`);
}

/**
 * 删除记录
 * @param {string} id id
 * @returns
 */
export function deleteMyPrizeRecord (id:number) {
  return request.delete<Result<any>>(`/user-prize/delete/${id}`);
}
